package everydayone.findbestvalue;

import java.util.Arrays;

/**
 * @date 2020/06/14
 * @author 王光浩
 * @thinking 使用暴力法
 * 	首先对数组进行排序，遍历数组，不断寻找满足和为 target 的 value
 */
public class MyMethodOne {
	public int findBestValue(int[] arr, int target) {
		if (arr == null || arr.length == 0)
			return -1;
		//对数组进行排序
		Arrays.sort(arr);
		int len = arr.length;
		int avg;
		//遍历数组，每次遍历将 target/数组剩下的元素个数，然后判断当前元素是否大于求出来的平均值
		for (int i = 0; i < len; i++) {
			int temp = target / (len - i);
			//计算 target/数组剩下的元素个数（注意当小数部分大于 0.5 时，要进位）
			if ((double) target / (len - i) - temp > 0.5)
				avg = temp + 1;
			else
				avg = temp;
			//当前元素大于平均值，则直接返回平均值
			if (arr[i] > avg)
				return avg;
		}
		return arr[len - 1];
	}
}
